package com.chj.config;

import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

/**
 * TODO 里面的属性和github的属性一一对应，
 *  增加@RefreshScope，代表这个类是可用基于rabbitmq自动刷新的
 *  1、Environment 的动态刷新 动态刷新其实要有一个契机，其实这个契机就是手动调用刷新接口，
 *  如果你想刷新哪台主机的配置，就调用哪台注解的刷新接口,刷新接口为：http://localhost:8088/actuator/refresh
 *  2、@Value 注入的属性动态刷新 其实前面在调用刷新接口后，@Value 注入的属性是没有刷新的还是老的配置，这个也好理 解，
 *  @Value 注入的属性是项目启动就已经定了的。如果要使@Value 属性也刷新，就必须要 在类上面加上：@RefreshScope 注解。
 *
 */
@Component
@RefreshScope
public class InfoConfig {
    private org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());
    @Value("${info.app.name}")
    private String appName ;
    @Value("${info.company.name}")
    private String companyName ;
    @Autowired
    Environment environment;

    public String getApenvironmentpName() {
        return appName;
    }
    public void setAppName(String appName) {
        this.appName = appName;
    }
    public String getCompanyName() {
        return companyName;
    }
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    @Override
    public String toString() {
        logger.info("@Value======username======" + appName);
        logger.info("Environment======username======" + environment.getProperty("appName"));
        return "InfoConfig{" +"appName='" + appName + '\'' +
                ", companyName='" + companyName + '\'' + '}';
    }
}
